package tech.aistar.day01.anno.service.impl;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import tech.aistar.day01.anno.dao.IUserDao;
import tech.aistar.day01.anno.service.IUserService;

/**
 * 本类用来演示: 容器来帮忙创建及注入依赖对象
 *
 * @author: success
 * @date: 2021/5/6 10:54 上午
 */
@Service
public class UserServiceImpl implements IUserService {
    public UserServiceImpl(){
        System.out.println("UserServiceImpl空参构造被调用了!");
    }

    /**
     * 优先根据byType来实现自动装配的功能
     * 如果只发现1个类型的话,直接装配了.
     *
     * 如果发现ioc容器中存在多个类型[一个接口拥有多个实现的话]
     * 先看此处的属性名是否和ioc容器中的bean的id属性的值[bean的名字]匹配
     * 如果匹配到,则根据byName,否则直接抛出异常
     */
    @Autowired
    private IUserDao userDaoImpl2;

    /**
     * 根据byName自动装配
     */
//    @Autowired
//    //@Qualifier("dao2")
//    @Qualifier("userDaoImpl2")
//    private IUserDao userDao;


    @Override
    public void add() {
        //service层调用dao/mapper层.
        System.out.print("service-add->");
       userDaoImpl2.add();
    }
}
